//package com.company.resolver;
//
//import com.company.base.User;
//import com.company.core.annotation.LoginUser;
//import com.company.utils.CheckUtils;
//import com.company.utils.RedisUtils;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.core.MethodParameter;
//import org.springframework.stereotype.Component;
//import org.springframework.web.bind.support.WebDataBinderFactory;
//import org.springframework.web.context.request.NativeWebRequest;
//import org.springframework.web.method.support.HandlerMethodArgumentResolver;
//import org.springframework.web.method.support.ModelAndViewContainer;
//
//import javax.xml.bind.ValidationException;
//
//import static org.apache.logging.log4j.util.Strings.isBlank;
//
///**
// * 有@LoginUser注解的方法参数，注入当前登录用户
// *
// * HandlerMethodArgumentResolver     Spring自定义方法解析器
// */
//@Component
//public class LoginUserResolver implements HandlerMethodArgumentResolver {
//	// 是否开启redis缓存 true开启 false关闭
//	@Value("${planet.redis.open: false}")
//	private boolean open;
//	@Autowired
//	private RedisUtils R;
//
//	@Override
//	public boolean supportsParameter(MethodParameter parameter) {
//		return parameter.hasParameterAnnotation(LoginUser.class);
//	}
//
//	@Override
//	public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container, NativeWebRequest request, WebDataBinderFactory factory)
//			throws Exception {
//		// 如果开启redis缓存且planet.redis.open=true，则Token存到redis里
//		// 从header中获取token
//		String token = request.getHeader("token");
//		if (open) {
//			// token为空
//			if (isBlank(token)) {
//				throw new ValidationException("token不能为空");
//			}
//			User user = R.getToken(token, User.class);
//			if(CheckUtils.isNotEmpty(user)){
//				return user;
//			}else {
//				throw new ValidationException("token非法");
//			}
//		}else {
//			throw new ValidationException("redis没有开启，请检查");
//		}
//	}
//}
